#include "file.h"

File::File(char* nomFic) {	
	name = nomFic;
	if (stat(name,&buf) == -1) 
	{ name = "fichier invalide"; }
}

char* File::getNom() {
	return name;
}

long File::getSize() {
	long taille;
	taille=(long)buf.st_size;
	return taille; 
}

// date de dernière modification
char* File::getModifDate() {
	time_t t;
	t=buf.st_mtime;
	return convFrenchDate(t);
}

// convertit la date au format français
char* File::convFrenchDate(time_t timestamp) {
	char* res = new char[20];	
	struct tm *t;
	t = gmtime(&timestamp);
	sprintf(res,"%02u/%02u/%04u %02u:%02u:%02u",t->tm_mday,
	t->tm_mon+1,t->tm_year+1900,t->tm_hour,t->tm_min,t->tm_sec);
	return res;
}

// renvoie la catégorie de date de modification des
// fichiers pour gérer les couleurs des dossiers
int File::getDateCat(int paliersDate[4]) {
	time_t today;
	time(&today);
	// les time_t sont des nombres de secondes
	// on ramène les durées en jours pour pouvoir comparer avec les paliers
	for (int i=0; i<4; i++)
		if ((today - buf.st_mtime)/(3600*24) < paliersDate[i])
			return i+1;
	return 4;
}

